import { reqAddressList, reqDeleteAddress } from '../../../api/address'
import { toast, modal } from '@/utils/extendApi'
// 导入用于自动收起滑块的behavior
import swipeCellBehavior from '@/behaviors/swipeCell'
import addressStoreBehavior from '@/behaviors/addressStoreBehavior'
// 获取全局应用实例
const app = getApp()
Page({
  // 使用封装好的用于自动收起滑块的behavior
  behaviors: [swipeCellBehavior, addressStoreBehavior],
  data: {
    // 地址列表
    addressList: []
  },
  // 去编辑页面
  toEdit(event) {
    // 获取当前点击收货地址的id
    const { id } = event.currentTarget.dataset
    // 在路由跳转时将id传递给编辑页面
    wx.navigateTo({
      url: `/modules/settingModule/pages/address/add/index?id=${id}`
    })
  },
  // 删除收货地址
  async deleteAddress(event) {
    const { id } = event.target.dataset
    const res = await modal('提示', '您确定删除该收货地址吗？')
    if (res) {
      await reqDeleteAddress(id)
      toast('删除成功')
      // 重新获取地址列表数据
      this.getAddressList()
    } else {
      toast('取消删除')
    }
  },
  // 获取地址列表的数据
  async getAddressList() {
    const result = await reqAddressList()
    if (result.code === 200) {
      this.setData({
        addressList: result.data
      })
    }
  },
  // 点击收货地址的事件回调 当路径参数中存在 from=detail 更新App组件中的全局共享数据globalData.address 存储当前点击的收货地址
  changeAddress(event) {
    // 判断是否是从结算支付页面跳转到收货地址列表页面
    if (this.from != 'payDetail') return
    // 获取点击的收货地址
    const { address } = event.currentTarget.dataset
    // 收货地址不为空
    if (address) {
      // 将点击收货地址id存储到 globalData.address
      // app.globalData.address = address
      // 将当前选中的收货地址存储到addresStore中
      this.chooseAddrss(address)
      // 返回结算页面
      wx.navigateBack()
    }
  },
  // 当页面展示时获取地址列表数据
  // 此处不使用onLoad原因：当使用wx.navigateTo()跳转时不会销毁当前页面下次进入页面不会触发onload钩子函数
  onShow() {
    this.getAddressList()
  },
  // 获取路径传递的参数
  onLoad(options) {
    // 将传递的参数挂载到this上便于进行访问
    this.from = options.from
  }
})
